package funclearn

import (
	"errors"
	"fmt"
)

//函数第一种定义方式
func add(a, b int) int {
	return a + b
}

//函数的第二种定义方式
func add2(a, b int) (sum int) {
	sum = a + b
	return sum
}

//函数的第三种定义方式
func add3(a, b int) (sum int) {
	sum = a + b
	return //默认就是返回上面的这个sum
}

//函数的第四种用法
//被除数=0，会报错，怎么办？要返回多个值
func div(a, b int) (int, error) {
	var result int
	var err error

	if b == 0 {
		err = errors.New("被除数不能为0")
	} else {
		result = a / b
	}
	return result, err
}


//最常用的这种方式
func div2(a, b int) (result int, err error) {

	if b == 0 {
		err = errors.New("被除数不能为0")
	} else {
		result = a / b
	}
	return
}

func FuncDefine() {
	//相比其他静态语言，go语言的函数有很多亮点
	//函数的几个要素：1、函数名，2、参数，3.返回值

	result, err := div(12, 3)
	if err != nil {
		fmt.Println(err)
	} else {
		fmt.Println(result)
	}
	result2, err2 := div2(12, 0)
	if err2 != nil {
		fmt.Println(err2)
	} else {
		fmt.Println(result2)
	}

}
